﻿using MgSoft.Excel.Util;
using System;
using System.Collections.Generic;
using System.Text;

namespace MgSoft.Excel.Model.Template
{
    /// <summary>
    /// 描述Excel模板每个单元格的数据格式及以取数方式等
    /// </summary>
    public class TemplateCellConfig
    {
        /// <summary>
        /// 所有行或者起始行，从0开始
        /// </summary>
        public int StartRow { get; set; }

        /// <summary>
        /// 所在列或者起始列，从0开始
        /// </summary>
        public int ColumnIndex { get; set; }

        /// <summary>
        /// 所在列英文序号，例如：A,B,C,D
        /// </summary
        public string ColumnName
        {
            get
            {
                return SheetColumnNameUtil.ColumnIndexToColumnName(ColumnIndex);
            }
            set
            {
                ColumnIndex = SheetColumnNameUtil.ColumnNameToColumnIndex(value);
            }
        }

        /// <summary>
        /// 本列/行数据的名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 标题
        /// </summary>
        public string Caption { get; set; }

        /// <summary>
        /// 单元格数据类型
        /// </summary>
        public CellDataType Type { get; set; }

        /// <summary>
        /// 取数扩展，X为X轴，Y为Y轴，C为当前单元格
        /// </summary>
        public Ext Ext { get; set; }

        /// <summary>
        /// 下一条数据步进量
        /// </summary>
        public int NextSetp { get; set; } = 1;

        /// <summary>
        /// 是否必填
        /// </summary>
        public bool IsRequired { get; set; } = false;

        ///// <summary>
        ///// 是否可为空
        ///// </summary>
        //public bool IsEmpty { get; set; }

        /// <summary>
        /// 是否为关键数据，关键数据用于识别行数
        /// 以x轴扩展为例，如果第22行没有关键数据，则表格数据总行数共22行。只能有一个主键
        /// </summary>
        public bool IsKey { get; set; } = false;
    }
}
